package com.googlecode.lightest.core

/**
 * Represents a configuration of the test run
 */
interface IConfiguration {
    
    /**
     * Initializes the configuration.
     *
     * @param configText
     */
    void init(String configText)
    
    /**
     * Returns the class loader used to load the configuration-related classes.
     */
    GroovyClassLoader getClassLoader()
    
    /**
     * Returns a List of Strings representing class paths under which tasks
     * and potentially environment and preference classes are defined. The
     * current directory is added by default.
     */
    def getClassPaths()
    
    /**
     * Returns the output directory for the test run report.
     */
    def getOutputDir()
    
    /**
     * Returns a List of ITestEnvironment instances.
     */
    def getEnvironments()
    
    /**
     * Returns an instance of the concrete implementation of IPreferences.
     */
    def getPreferences()
    
    /**
     * Returns an instance of the concrete implementation of IReporter.
     */
    LightestTestListener getReporter()
    
    IDispatcherAssignmentStrategy getDispatcherAssignmentStrategy()
}
